/**
 * 
 */
package com.sophossystems.client.asmon.service.impl;

import java.util.List;

import org.apache.log4j.Logger;

import com.sophossystems.client.asmon.dao.ActivityDao;
import com.sophossystems.client.asmon.dao.ClienteDao;
import com.sophossystems.client.asmon.dao.ClientePMoralesDao;
import com.sophossystems.client.asmon.dao.ClientePersonasFisicasDao;
import com.sophossystems.client.asmon.dao.CoordinadorDao;
import com.sophossystems.client.asmon.dao.DireccionDao;
import com.sophossystems.client.asmon.dao.DocumentosDao;
import com.sophossystems.client.asmon.dao.EstadosDao;
import com.sophossystems.client.asmon.dao.FacturaDao;
import com.sophossystems.client.asmon.dao.LugarRecoleccionDao;
import com.sophossystems.client.asmon.dao.ModuleDao;
import com.sophossystems.client.asmon.dao.PeriodoRecoleccionDao;
import com.sophossystems.client.asmon.dao.PrivilegeDao;
import com.sophossystems.client.asmon.dao.RecolectaDocDao;
import com.sophossystems.client.asmon.dao.RepresentanteDocDao;
import com.sophossystems.client.asmon.dao.RepresentanteLegalDao;
import com.sophossystems.client.asmon.dao.RoleDao;
import com.sophossystems.client.asmon.dao.ServiciosDao;
import com.sophossystems.client.asmon.dao.SexoDao;
import com.sophossystems.client.asmon.dao.StatusDao;
import com.sophossystems.client.asmon.dao.TipoPersonaDao;
import com.sophossystems.client.asmon.dao.TipoRegimenDao;
import com.sophossystems.client.asmon.dao.UserDao;
import com.sophossystems.client.asmon.dao.ZonaDao;
import com.sophossystems.client.asmon.dao.spring.ActivityDaoImpl;
import com.sophossystems.client.asmon.dao.spring.ClienteDaoImpl;
import com.sophossystems.client.asmon.dao.spring.ClientePMoralesDaoImpl;
import com.sophossystems.client.asmon.dao.spring.ClientePersonasFisicasDaoImpl;
import com.sophossystems.client.asmon.dao.spring.CoordinadorDaoImpl;
import com.sophossystems.client.asmon.dao.spring.DireccionDaoImpl;
import com.sophossystems.client.asmon.dao.spring.DocumentosDaoImpl;
import com.sophossystems.client.asmon.dao.spring.FacturaDaoImpl;
import com.sophossystems.client.asmon.dao.spring.LugarRecoleccionDaoImpl;
import com.sophossystems.client.asmon.dao.spring.ModuleDaoImpl;
import com.sophossystems.client.asmon.dao.spring.PeriodoRecoleccionDaoImpl;
import com.sophossystems.client.asmon.dao.spring.PrivilegeDaoImpl;
import com.sophossystems.client.asmon.dao.spring.RecolectaDocDaoImpl;
import com.sophossystems.client.asmon.dao.spring.RepresentanteDocDaoImpl;
import com.sophossystems.client.asmon.dao.spring.RepresentanteLegalDaoImpl;
import com.sophossystems.client.asmon.dao.spring.RoleDaoImpl;
import com.sophossystems.client.asmon.dao.spring.ServiciosDaoImpl;
import com.sophossystems.client.asmon.dao.spring.SexoDaoImpl;
import com.sophossystems.client.asmon.dao.spring.StatusDaoImpl;
import com.sophossystems.client.asmon.dao.spring.TipoPersonaDaoImpl;
import com.sophossystems.client.asmon.dao.spring.TipoRegimenDaoImpl;
import com.sophossystems.client.asmon.dao.spring.UserDaoImpl;
import com.sophossystems.client.asmon.dao.spring.ZonaDaoImpl;
import com.sophossystems.client.asmon.dto.ActivityDTO;
import com.sophossystems.client.asmon.dto.ClienteDTO;
import com.sophossystems.client.asmon.dto.ClientePMoralesDTO;
import com.sophossystems.client.asmon.dto.ClientePersonasFisicasDTO;
import com.sophossystems.client.asmon.dto.CoordinadorDTO;
import com.sophossystems.client.asmon.dto.DireccionDTO;
import com.sophossystems.client.asmon.dto.DocumentosDTO;
import com.sophossystems.client.asmon.dto.EstadosDTO;
import com.sophossystems.client.asmon.dto.FacturaDTO;
import com.sophossystems.client.asmon.dto.LugarRecoleccionDTO;
import com.sophossystems.client.asmon.dto.ModuleDTO;
import com.sophossystems.client.asmon.dto.PeriodoRecoleccionDTO;
import com.sophossystems.client.asmon.dto.PrivilegeDTO;
import com.sophossystems.client.asmon.dto.RecolectaDocDTO;
import com.sophossystems.client.asmon.dto.RepresentanteDocDTO;
import com.sophossystems.client.asmon.dto.RepresentanteLegalDTO;
import com.sophossystems.client.asmon.dto.RoleDTO;
import com.sophossystems.client.asmon.dto.ServiciosDTO;
import com.sophossystems.client.asmon.dto.SexoDTO;
import com.sophossystems.client.asmon.dto.StatusDTO;
import com.sophossystems.client.asmon.dto.TipoPersonaDTO;
import com.sophossystems.client.asmon.dto.TipoRegimenDTO;
import com.sophossystems.client.asmon.dto.UserDTO;
import com.sophossystems.client.asmon.exceptions.BusinessException;
import com.sophossystems.client.asmon.exceptions.DaoException;
import com.sophossystems.client.asmon.service.CatalogServices;

/**
 * 
 * @author juanvelezballesteros
 * 
 */
public class CatalogServicesImpl implements CatalogServices {

	private static Logger log = Logger
			.getLogger(AdministrationServicesImpl.class);

	
	private TipoPersonaDao tipoPersonaDao;
	private ActivityDao activityDao;
	private ClienteDao clienteDao;
	private ClientePersonasFisicasDao personaFisicaDao;
	private ClientePMoralesDao personaMoralDao;
	private DireccionDao direccionDao;
	private DocumentosDao documentosDao;
	private FacturaDao facturaDao;
	private ModuleDao moduleDao;
	private PrivilegeDao privilegeDao;
	private RecolectaDocDao recolectaDocDao;
	private RepresentanteDocDao representanteDocDao;
	private RepresentanteLegalDao representanteLegalDao;
	private RoleDao roleDao;
	private ServiciosDao serviciosDao;
	private UserDao userDao;
	private CoordinadorDao coordinadorDao;
	private LugarRecoleccionDao lugarRecoleccionDao;
	private PeriodoRecoleccionDao periodoRecoleccionDao;
	private SexoDao sexoDao;
	private StatusDao statusDao;
	private TipoRegimenDao tipoRegimenDao;
	private ZonaDao zonaDao;
	private EstadosDao estadoDao;
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.sophossystems.client.asmon.service.CatalogServices#catalogoTipoPersona
	 * ()
	 */
	@Override
	public List<TipoPersonaDTO> catalogoTipoPersona() throws BusinessException {
		List<TipoPersonaDTO> lista = null;
		try {

			lista = tipoPersonaDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<ActivityDTO> catalogoActivity() throws BusinessException{
		List<ActivityDTO> lista = null;
		try{
			lista = activityDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<ClienteDTO> catalogoCliente() throws BusinessException{
		List<ClienteDTO> lista = null;
		try{
			lista = clienteDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<ClientePersonasFisicasDTO> catalogoClientePersonaFisica() throws BusinessException{
		List<ClientePersonasFisicasDTO> lista = null;
		try{
			lista = personaFisicaDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<ClientePMoralesDTO> catalogoClientePersonaMoral() throws BusinessException{
		List<ClientePMoralesDTO> lista = null;
		try{
			lista = personaMoralDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<DireccionDTO> catalogoDireccion() throws BusinessException{
		List<DireccionDTO> lista = null;
		try{
			lista = direccionDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<DocumentosDTO> catalogoDocumentos() throws BusinessException{
		List<DocumentosDTO> lista = null;
		try{
			lista = documentosDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	@Override
	public List<FacturaDTO> catalogoFactura() throws BusinessException{
		List<FacturaDTO> lista = null;
		try{
			lista = facturaDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<ModuleDTO> catalogoModule() throws BusinessException{
		List<ModuleDTO> lista = null;
		try{
			lista = moduleDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	@Override
	public List<PrivilegeDTO> catalogoPrivilege() throws BusinessException{
		List<PrivilegeDTO> lista = null;
		try{
			lista = privilegeDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<RecolectaDocDTO> catalogoRecolectaDoc() throws BusinessException{
		List<RecolectaDocDTO> lista = null;
		try{
			lista = recolectaDocDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	@Override
	public List<RepresentanteDocDTO> catalogoRepresentanteDoc() throws BusinessException{
		List<RepresentanteDocDTO> lista = null;
		try{
			lista = representanteDocDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<RepresentanteLegalDTO> catalogoRepresentanteLegal() throws BusinessException{
		List<RepresentanteLegalDTO> lista = null;
		try{
			lista = representanteLegalDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<RoleDTO> catalogoRole() throws BusinessException{
		List<RoleDTO> lista = null;
		try{
			
			lista = roleDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<ServiciosDTO> catalogoServicios() throws BusinessException{
		List<ServiciosDTO> lista = null;
		try{
			
			lista = serviciosDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	@Override
	public List<UserDTO> catalogoUser() throws BusinessException{
		List<UserDTO> lista = null;
		try{
			
			lista = userDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		}catch (DaoException ex) {
			throw new BusinessException("Error: Catalog Services"
					+ ex.getCause());
		}
		return lista;
	}
	
	public List<CoordinadorDTO> catalogoCoordinador() throws BusinessException{
		List<CoordinadorDTO> lista = null;
		try {
			
			lista = coordinadorDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error catalogoCoordinador " + ex.getCause());
		}
		return lista;
	}
	
	public List<LugarRecoleccionDTO> catalogoLugarRecoleccion() throws BusinessException{
		List<LugarRecoleccionDTO> lista = null;
		try {
			
			lista = lugarRecoleccionDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error catalogoLugarRecoleccion " + ex.getCause());
		}
		return lista;
	}
	
	public List<PeriodoRecoleccionDTO> catalogoPeriodoRecoleccion() throws BusinessException{
		List<PeriodoRecoleccionDTO> lista = null;
		try {
			
			lista = periodoRecoleccionDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error catalogoPeriodoRecoleccion " + ex.getCause());
		}
		return lista;
	}
	
	public List<SexoDTO> catalogoSexo() throws BusinessException{
		List<SexoDTO> lista = null;
		try {
			
			lista = sexoDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error catalogoSexo " + ex.getCause());
		}
		return lista;
	}
	
	public List<StatusDTO> catalogoStatus()throws BusinessException{
		List<StatusDTO> lista = null;
		try {
			
			lista = statusDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error catalogoStatus " + ex.getCause());
		}
		return lista;
	}
	
	public List<TipoRegimenDTO> catalogoTipoRegimen()throws BusinessException{
		List<TipoRegimenDTO> lista = null;
		try {
			
			lista = tipoRegimenDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error catalogoStatus " + ex.getCause());
		}
		return lista;
	}
	
/*	public List<ZonasDTO> catalogoZona()throws BusinessException{
		List<ZonasDTO> lista = null;
		try {
			
			lista = zonaDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error catalogoZona " + ex.getCause());
		}
		return lista;
	}*/
	
	/**
	 * @return the tipoPersonaDao
	 */
	public TipoPersonaDao getTipoPersonaDao() {
		return tipoPersonaDao;
	}
	/**
	 * @param tipoPersonaDao the tipoPersonaDao to set
	 */
	public void setTipoPersonaDao(TipoPersonaDao tipoPersonaDao) {
		this.tipoPersonaDao = tipoPersonaDao;
	}

	/**
	 * @return the activityDao
	 */
	public ActivityDao getActivityDao() {
		return activityDao;
	}

	/**
	 * @param activityDao the activityDao to set
	 */
	public void setActivityDao(ActivityDao activityDao) {
		this.activityDao = activityDao;
	}

	/**
	 * @return the clienteDao
	 */
	public ClienteDao getClienteDao() {
		return clienteDao;
	}

	/**
	 * @param clienteDao the clienteDao to set
	 */
	public void setClienteDao(ClienteDao clienteDao) {
		this.clienteDao = clienteDao;
	}

	/**
	 * @return the personaFisicaDao
	 */
	public ClientePersonasFisicasDao getPersonaFisicaDao() {
		return personaFisicaDao;
	}

	/**
	 * @param personaFisicaDao the personaFisicaDao to set
	 */
	public void setPersonaFisicaDao(ClientePersonasFisicasDao personaFisicaDao) {
		this.personaFisicaDao = personaFisicaDao;
	}

	/**
	 * @return the personaMoralDao
	 */
	public ClientePMoralesDao getPersonaMoralDao() {
		return personaMoralDao;
	}

	/**
	 * @param personaMoralDao the personaMoralDao to set
	 */
	public void setPersonaMoralDao(ClientePMoralesDao personaMoralDao) {
		this.personaMoralDao = personaMoralDao;
	}

	/**
	 * @return the direccionDao
	 */
	public DireccionDao getDireccionDao() {
		return direccionDao;
	}

	/**
	 * @param direccionDao the direccionDao to set
	 */
	public void setDireccionDao(DireccionDao direccionDao) {
		this.direccionDao = direccionDao;
	}

	/**
	 * @return the documentosDao
	 */
	public DocumentosDao getDocumentosDao() {
		return documentosDao;
	}

	/**
	 * @param documentosDao the documentosDao to set
	 */
	public void setDocumentosDao(DocumentosDao documentosDao) {
		this.documentosDao = documentosDao;
	}

	/**
	 * @return the facturaDao
	 */
	public FacturaDao getFacturaDao() {
		return facturaDao;
	}

	/**
	 * @param facturaDao the facturaDao to set
	 */
	public void setFacturaDao(FacturaDao facturaDao) {
		this.facturaDao = facturaDao;
	}

	/**
	 * @return the moduleDao
	 */
	public ModuleDao getModuleDao() {
		return moduleDao;
	}

	/**
	 * @param moduleDao the moduleDao to set
	 */
	public void setModuleDao(ModuleDao moduleDao) {
		this.moduleDao = moduleDao;
	}

	/**
	 * @return the privilegeDao
	 */
	public PrivilegeDao getPrivilegeDao() {
		return privilegeDao;
	}

	/**
	 * @param privilegeDao the privilegeDao to set
	 */
	public void setPrivilegeDao(PrivilegeDao privilegeDao) {
		this.privilegeDao = privilegeDao;
	}

	/**
	 * @return the recolectaDocDao
	 */
	public RecolectaDocDao getRecolectaDocDao() {
		return recolectaDocDao;
	}

	/**
	 * @param recolectaDocDao the recolectaDocDao to set
	 */
	public void setRecolectaDocDao(RecolectaDocDao recolectaDocDao) {
		this.recolectaDocDao = recolectaDocDao;
	}

	/**
	 * @return the representanteDocDao
	 */
	public RepresentanteDocDao getRepresentanteDocDao() {
		return representanteDocDao;
	}

	/**
	 * @param representanteDocDao the representanteDocDao to set
	 */
	public void setRepresentanteDocDao(RepresentanteDocDao representanteDocDao) {
		this.representanteDocDao = representanteDocDao;
	}

	/**
	 * @return the representanteLegalDao
	 */
	public RepresentanteLegalDao getRepresentanteLegalDao() {
		return representanteLegalDao;
	}

	/**
	 * @param representanteLegalDao the representanteLegalDao to set
	 */
	public void setRepresentanteLegalDao(RepresentanteLegalDao representanteLegalDao) {
		this.representanteLegalDao = representanteLegalDao;
	}

	/**
	 * @return the roleDao
	 */
	public RoleDao getRoleDao() {
		return roleDao;
	}

	/**
	 * @param roleDao the roleDao to set
	 */
	public void setRoleDao(RoleDao roleDao) {
		this.roleDao = roleDao;
	}

	/**
	 * @return the serviciosDao
	 */
	public ServiciosDao getServiciosDao() {
		return serviciosDao;
	}

	/**
	 * @param serviciosDao the serviciosDao to set
	 */
	public void setServiciosDao(ServiciosDao serviciosDao) {
		this.serviciosDao = serviciosDao;
	}

	/**
	 * @return the userDao
	 */
	public UserDao getUserDao() {
		return userDao;
	}

	/**
	 * @param userDao the userDao to set
	 */
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	/**
	 * @return the coordinadorDao
	 */
	public CoordinadorDao getCoordinadorDao() {
		return coordinadorDao;
	}

	/**
	 * @param coordinadorDao the coordinadorDao to set
	 */
	public void setCoordinadorDao(CoordinadorDao coordinadorDao) {
		this.coordinadorDao = coordinadorDao;
	}

	/**
	 * @return the lugarRecoleccionDao
	 */
	public LugarRecoleccionDao getLugarRecoleccionDao() {
		return lugarRecoleccionDao;
	}

	/**
	 * @param lugarRecoleccionDao the lugarRecoleccionDao to set
	 */
	public void setLugarRecoleccionDao(LugarRecoleccionDao lugarRecoleccionDao) {
		this.lugarRecoleccionDao = lugarRecoleccionDao;
	}

	/**
	 * @return the periodoRecoleccionDao
	 */
	public PeriodoRecoleccionDao getPeriodoRecoleccionDao() {
		return periodoRecoleccionDao;
	}

	/**
	 * @param periodoRecoleccionDao the periodoRecoleccionDao to set
	 */
	public void setPeriodoRecoleccionDao(PeriodoRecoleccionDao periodoRecoleccionDao) {
		this.periodoRecoleccionDao = periodoRecoleccionDao;
	}

	/**
	 * @return the sexoDao
	 */
	public SexoDao getSexoDao() {
		return sexoDao;
	}

	/**
	 * @param sexoDao the sexoDao to set
	 */
	public void setSexoDao(SexoDao sexoDao) {
		this.sexoDao = sexoDao;
	}

	/**
	 * @return the statusDao
	 */
	public StatusDao getStatusDao() {
		return statusDao;
	}

	/**
	 * @param statusDao the statusDao to set
	 */
	public void setStatusDao(StatusDao statusDao) {
		this.statusDao = statusDao;
	}

	/**
	 * @return the tipoRegimenDao
	 */
	public TipoRegimenDao getTipoRegimenDao() {
		return tipoRegimenDao;
	}

	/**
	 * @param tipoRegimenDao the tipoRegimenDao to set
	 */
	public void setTipoRegimenDao(TipoRegimenDao tipoRegimenDao) {
		this.tipoRegimenDao = tipoRegimenDao;
	}

	/**
	 * @return the zonaDao
	 */
	public ZonaDao getZonaDao() {
		return zonaDao;
	}

	/**
	 * @param zonaDao the zonaDao to set
	 */
	public void setZonaDao(ZonaDao zonaDao) {
		this.zonaDao = zonaDao;
	}

	/**
	 * @return the estadoDao
	 */
	public EstadosDao getEstadoDao() {
		return estadoDao;
	}

	/**
	 * @param estadoDao the estadoDao to set
	 */
	public void setEstadoDao(EstadosDao estadoDao) {
		this.estadoDao = estadoDao;
	}

	/* (non-Javadoc)
	 * @see com.sophossystems.client.asmon.service.CatalogServices#catalogoEstados()
	 */
	@Override
	public List<EstadosDTO> catalogoEstados() throws BusinessException {
		List<EstadosDTO> lista = null;
		try {
			
			lista = estadoDao.findAll();
			log.debug("Se obtiene una lista de tamaño: " + lista.size());
		} catch (DaoException ex) {
			throw new BusinessException("Error catalogoSexo " + ex.getCause());
		}
		return lista;
	}

	
}
